home *** CD-ROM | disk | FTP | other *** search
- #! /usr/bin/env python
-
- # www3.py -- print the contents of a URL on stdout
- # - error checking
- # - Error 302 handling
-
- import sys
- import urllib
- import types
-
- def main():
- if len(sys.argv) != 2 or sys.argv[1][:1] == '-':
- print "Usage:", sys.argv[0], "url"
- sys.exit(2)
- url = sys.argv[1]
- fp = my_urlopen(url)
- while 1:
- line = fp.readline()
- if not line: break
- sys.stdout.write(line)
-
- def my_urlopen(url):
- try:
- fp = urllib.urlopen(url)
- return fp
- except IOError, msg:
- if type(msg) == types.TupleType and len(msg) == 4:
- m = msg[3]
- if msg[1] == 302:
- if m.has_key('location'):
- url = m['location']
- print 'Location:', url
- return my_urlopen(url)
- elif m.has_key('uri'):
- url = m['uri']
- print 'URI:', url
- return my_urlopen(url)
- print '(Error 302 w/o Location/URI header???)'
- print msg[:3]
- for line in m.headers:
- sys.stdout.write(line)
- else:
- print msg
- sys.exit(1)
-
- main()
-